#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''eof
name:企业法人/负责人最近半年发生变更
code:EG_LegalChangeInSix
tableName:
columnName:
groups:准入>企业业务信息校验
dependencies:EG
type:常用指标
dataSourceType:在线指标
description:
eof'''

import sys
import pandas as pd
import datetime
from dateutil.relativedelta import relativedelta
import re

reload(sys)
sys.setdefaultencoding('utf-8')

last_month_list = [(datetime.datetime.now() - pd.tseries.offsets.DateOffset(months=i)).strftime('%Y-%m-%d')\
                    for i in [6 , 0]]


def ChargePersonChange_6mon():
    null_type_list = ['', None, 'null', 'Null', 'NULL', '/']
    count_list = set()
    # r = re.compile('^负责人(姓名)?(变更)?(.*代表.*|.*人.*|.*者.*)?$')
    frchange_list = [u'法定代表人(负责人、董事长、首席代表)变更',u'负责人变更（法定代表人、负责人、首席代表、合伙事务执行人等变更）变更',u'法定代表人变更',u'负责人变更（法定代表人、负责人、首席代表、个体户经营者、投资人、合伙事务执行人等变更） ',u'法定代表人',u'负责人（法定代表人、首席代表、合伙事务执行人等）变更',u'负责人变更（法定代表人、负责人、首席代表、个体户经营者、投资人、合伙事务执行人等变更）',u'法定代表人(负责人、独资投资人)',u'法定代表人（负责人）',u'变更经营者',u'经营者信息变更',u'法定代表人(负责人、独资投资人)变更',u'经营者姓名',u'经营者名称变更',u'法定代表人姓名',u'变更经营者,变更经营者',u'执行合伙企业事务的合',u'其他变更(经营者信息)',u'法定代表人（负责人）变更',u'经营者变更（家庭经营的）',u'执行合伙企业事务的合伙人',u'个体经营者信息',u'个体变更经营者',u'执行人变更',u'变更经营者,变更经营者,变更经营者',u'法定代表人姓名变更',u'负责人变更',u'执行事务合伙人变更',u'法定代表人(负责人、首席代表)',u'变更经营者,变更经营者,变更经营者,变更经营者',u'负责人姓名',u'法定代表变更',u'首席代表',u'变更经营者，变更经营者，变更经营者',u'负责人',u'变更经营者,变更经营者,变更经营者,变更经营者,变更经营者',u'负责人姓名变更',u'执行合伙企业事务的合伙变更',u'执行事务合伙人及委派代表',u'执行事务合伙人及委派',u'首席代表变更',u' 法定代表人(负责人、董事长、首席代表)变更',u'执行事务合伙人及委派代表信息（境外企业、法人或其他组织）',u'执行合伙企业事务的合伙',u'执行事务合伙人/委派代表',u' 法定代表人变更',u' 负责人变更',u'法定代表',u'法定代表人(负责人、董事长',u'经营者变更',u'经营者',u'变更经营者，变更经营者',u'经营者姓名变更',u'负责人变更（法定代表人、负责人、首席代表、合伙事务执行人等变更）']
    try:
        bgxx = EG['srcData'][0]['EG']['results'][0]['bgxx']

        if len(bgxx) >= 1:
            for i in bgxx:
                try:
                    if Formate(i.get('change_date')) is not None and i.get('change_items') not in null_type_list:
                            change_date = Formate(i['change_date'])
                            content_before_change = i['content_before_change'] if i.get('content_before_change') is not None else ''
                            content_after_change = i['content_after_change'] if i.get('content_after_change') is not None else ''
                            if change_date > last_month_list[0] and change_date <= last_month_list[1] \
                                    and i['change_items'] in frchange_list:
                                count_list.add((change_date + content_before_change + content_after_change))
                            else:
                                count_list.add(0)
                    else:
                        count_list.add(None)
                except:
                    count_list.add(None)
                    continue
            if None in count_list and len(count_list) ==1:
                return u'缺失值'
            else:
                count_notnone = [i for i in count_list if i!=0 and i!=None]
                return len(count_notnone)
        else:
            return 0
    except:
        return u'缺失值'


def Formate(time):
    import re
    import datetime
    r = re.compile(r'\D+')
    try:
        date = datetime.datetime.strptime(time, '%Y.%m.%d').strftime('%Y-%m-%d')
    except:
        try:
            date = datetime.datetime.strptime(time, '%Y-%m-%d').strftime('%Y-%m-%d')
        except:
            try:
                date = datetime.datetime.strptime(time, '%Y/%m/%d').strftime('%Y-%m-%d')
            except:
                try:
                    tmp = r.sub('', time)
                    date = datetime.datetime.strptime(tmp, '%Y%m%d').strftime('%Y-%m-%d')
                except:
                    date = None
    return date


result = ChargePersonChange_6mon()
